home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Borland Plateform / Turbo Prolog 2 / EXAMPL29.PRO < prev    next >
Encoding:
Prolog Source  |  1986-04-25  |  1.8 KB  |  55 lines

  1.               /* Program 29 */
  2. domains
  3.     list=symbol*
  4.     scores=integer
  5. predicates
  6.     member(symbol,list)
  7.     run
  8.     continue(list,scores)
  9.     yes_no_count(symbol,list)
  10.     guessword(scores,list)
  11.     word(list,integer)
  12.     read_as_list(list,integer)
  13. goal
  14.     makewindow(1,7,0,"",0,0,25,80),
  15.     makewindow(2,7,135,"Counting",1,20,4,34),
  16.     makewindow(3,112,112,"YES",5,5,7,30),
  17.     makewindow(4,112,112,"NO",5,40,7,30),
  18.     makewindow(5,7,7,"",14,20,10,34),
  19.     run.
  20. clauses
  21.     run:- word(W,L),
  22.           shiftwindow(1),clearwindow,
  23.           write("The word has ",L," letters"),
  24.           shiftwindow(2),clearwindow,
  25.           shiftwindow(3),clearwindow,
  26.           shiftwindow(4),clearwindow,
  27.           continue(W,0),fail.
  28.     continue(L,R):-
  29.           shiftwindow(5),clearwindow,
  30.           write("Guess a letter :"),
  31.           Total=R+1,readln(T),yes_no_count(T,L),
  32.           shiftwindow(5),clearwindow,
  33.           guessword(Total,L),continue(L,Total).
  34.     yes_no_count(X,List):-
  35.           member(X,List),shiftwindow(3),write(X),
  36.                          shiftwindow(2),write(X),!.
  37.     yes_no_count(X,_):-
  38.            shiftwindow(4),write(X),
  39.            shiftwindow(2),write(X).
  40.     guessword(Count,Word):-
  41.            write("Know the word yet? Press y or n"),
  42.            readchar(A),A='y',cursor(0,0),
  43.            write("Type it in one letter per line \n"),
  44.            word(Word,L),read_as_list(G,L),
  45.            G=Word,clearwindow,window_attr(112),
  46.            write("Right! You used ",Count," guess(es)"),
  47.            readchar(_),window_attr(7),!,fail.
  48.     guessword(_,_).
  49.     word([b,i,r,d],4). word([p,r,o,l,o,g],6).
  50.     word([f,u,t,u,r,e],6).
  51.     member(X,[X|_]):-!.
  52.     member(X,[_|T]):-member(X,T).
  53.     read_as_list([],0) :-!.
  54.     read_as_list([Ch|Rest],L) :-
  55.            readln(Ch),L1=L-1,read_as_list(Rest,L1).